#pragma once
#include <iostream>
#ifndef __SIMPLE_H__
#define __SIMPLE_H__

enum SHOES_TYPE
{
	NIKE,
	ADIDAS,
	LINING
};


class Shoes
{
public:
	virtual ~Shoes() 
	{
		std::cout << "delete Shoes" << std::endl;

	}
	virtual void Show() = 0;
};

class NikeShoes : public Shoes
{
public:
	~NikeShoes() 
	{
		std::cout << "delete nike" << std::endl;
	}
	void Show();

};

class AdidasShoes : public Shoes
{
public:
	~AdidasShoes()
	{
		std::cout << "delete adidas" << std::endl;
	}
	void Show();

};

class LiNingShoes : public Shoes
{
public:
	~LiNingShoes()
	{
		std::cout << "delete liling" << std::endl;
	}
	void Show();
};


class ShoesFactory
{
public:
	Shoes* createShoes(SHOES_TYPE type);
};


#endif // !__SIMPLE_H__
